/**
 * 项目名：	Rumba Plan
 * 
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2007，所有权利保留。
 * 
 * 文件名：	IOptionCollection.java
 * 模块说明：	
 * 修改历史：
 * 2007-3-15 - lxm - 创建。
 */
package com.hd123.rumba.option;

import java.util.List;

import com.hd123.rumba.exception.BusinessException;
import com.hd123.rumba.runtime.IBaseEntity;
import com.hd123.rumba.user.IUser;

/**
 * 选项取值集合 | 实体 | 接口类
 * <p>
 * 
 * BK = domain + optionClassName + user
 * 
 * @author lxm
 * 
 */
public interface IOptionCollection extends IBaseEntity {

  /** 属性：对应选项类名 */
  public String getOptionalClassName() throws BusinessException;

  public void setOptionalClassName(String optionalClassName) throws BusinessException;

  /** 属性：所属用户。null表示为选项的全局取值。 */
  public IUser getUser() throws BusinessException;

  public void setUser(IUser user) throws BusinessException;

  /**
   * 属性：是否锁定个性化设置。<br>
   * 表示是否禁止所有用户进行个性化设置的修改。<br>
   * 仅当user==null时有效。
   */
  public Boolean getLocked() throws BusinessException;

  public void setLocked(Boolean locked) throws BusinessException;

  /**
   * 属性：是否启用个性化设置。<br>
   * 表示所有用户个性化设置是否有效。<br>
   * 仅当user==null时有效。
   */
  public Boolean getOnline() throws BusinessException;

  public void setOnline(Boolean online) throws BusinessException;

  /**
   * 属性：是否从上级继承。<br>
   * 当取值为true的时候，表示所有items所包含的选项取值无效。<br>
   * 用户个性化的上级是域全局，而域全局的上级是系统（出厂设置）。
   */
  public Boolean getInherited() throws BusinessException;

  public void setInherited(Boolean inherited) throws BusinessException;

  /**
   * 属性：选项取值列表。<br>
   * 选项还有一种状态是不指定值（取系统默认值），在这种情况下不需要出现在该列表中。
   */
  public List<IOptionItem> getItems() throws BusinessException;

  public void setItems(List<IOptionItem> items) throws BusinessException;

  /**
   * 转换为业务引用字符串。
   * 
   * @return
   * @throws BusinessException
   */
  public String toBizString() throws BusinessException;

  /**
   * 根据选项名取得选项取值项。
   * 
   * @param name
   *          指定选项名。
   * @return 返回取得的选项取值项。
   * @throws BusinessException
   */
  public IOptionItem getItemByName(String name) throws BusinessException;
}
